/*
 * =====================================================================================
 * Copyright 2019 YiDao Inc.
 * License ()
 * Author:  XXXXXXX (), liushuyong@yidao.com
 * Filename:  ICar.h
 * Description:
 * Created:  09/26/21 19:59:56
 * Version:  1.0
 * Company:  YiDao
 * =====================================================================================
 */

#include <string>
#include "IWheel.h"
#include "IMotor.h"
#include "IBody.h"
#include "ICarBuilder.h"

using std::string;

class ICarBuilder;


class ICar {
  public:
    ICar();
    virtual ~ ICar();

	friend class ICarBuilder;       //可以访问ICar的私有变量
	static ICarBuilder builder();
    void SetMotor(IMotor*& wheel);
    void SetWheel(IWheel*& display);
    void SetBody(IBody*& body);
    string ToString();

  protected:
    IMotor* mpMotor;
    IWheel* mpWheel;
	IBody* mpIBody;
    string mName;

};
